package basic;

/**
 * @Description: TODO getClass和.class区别
 * @Author: wzj
 * @Date: 2020/5/19 20:41
 */
public class ClassAndGetClass {
    public static void main(String[] args) {
        /*
        用于获取类的类型，父类的类型类和子类的类型类是不同的。
        getClass方法，有多态能力，运行时可以返回子类的类型信息;
        .class是没有多态的，是静态解析的，编译时可以确定类型信息。
         */
        Test t = new Test();
        TestSon tSon = new TestSon();
        Test tSon1 = new TestSon();

        Class c = Test.class;
        Class c1 = t.getClass();//c和c1相等
        Class c2 = TestSon.class;
        Class c3 = tSon.getClass();
        Class c4 = tSon1.getClass();//c2和c3和c4相等 c4返回的是子类型类
        System.out.println(c == c1);//true
        System.out.println(c == c4);//false
        System.out.println(c2 == c3);//true
        System.out.println(c2 == c4);//true
        System.out.println(c1 == c2);//false
        System.out.println(c == c2);//false
    }
}

